package com.eps.tesoreria.DAO;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.eps.TO.AnoTO;
import com.eps.TO.TipoTO;
import com.eps.entity.Proyecto;
import com.eps.entity.Tipo;
import com.eps.tesoreria.Entity.ClientesComercial;
import com.eps.tesoreria.Entity.ClientesComercialPK;
import com.eps.tesoreria.Entity.DetalleAprobacionPlanilla;
import com.eps.tesoreria.Entity.DetalleAprobacionPlanillaPK;
import com.eps.tesoreria.Entity.DetalleRendicionCajachica;
import com.eps.tesoreria.Entity.DetalleRendicionCajachicaPK;
import com.eps.tesoreria.Entity.FondofijoCajachica;
import com.eps.tesoreria.Entity.PagoCaja;
import com.eps.tesoreria.Entity.PagoCajaPK;
import com.eps.tesoreria.Entity.PlanillaTesoreria;
import com.eps.tesoreria.Entity.RendicionCajachica;
import com.eps.tesoreria.TO.ClienteTO;
import com.eps.tesoreria.TO.DetallePlanillaTO;
import com.eps.tesoreria.TO.DetalleRendicionCajaChicaTO;
import com.eps.tesoreria.TO.FondoFijoTO;
import com.eps.tesoreria.TO.PagoCajaTO;
import com.eps.tesoreria.TO.TrabajadorTO;
import com.eps.util.Utiles_Convertir;
import com.eps.util.Utiles_Fecha;
import com.eps.tesoreria.TO.PlanillaTO;
@Repository
public class PlanillaHibernateDAO extends HibernateDaoSupport implements
		IPlanilla {
	
	@Autowired
	public PlanillaHibernateDAO(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
		// TODO Auto-generated constructor stub
	}
	
	
	public TipoTO getTipoCampoCodigo(String campo, String codigo)
			throws Exception {
		Session session = getHibernateTemplate().getSessionFactory()
				.openSession();
		Query consulta = session
				.createSQLQuery(
						"SELECT id_tabla_tipo AS id_tabla_tipo, convert(varchar(25),tabla) AS tabla, convert(varchar(25), descripcion_campo) AS descripcion_campo, convert( varchar(10),codigo) AS codigo, descripcion_valor AS descripcion_valor FROM Tipo where ltrim(descripcion_campo)='"
								+ campo
								+ "' and ltrim(codigo)='"
								+ codigo
								+ "'").setResultTransformer(
						Transformers.aliasToBean(TipoTO.class));
		;
		return (TipoTO) consulta.list().get(0);
	}
	public int getTipoPlanilla(String planilla)
	throws Exception {
		Session session = getHibernateTemplate().getSessionFactory()
				.openSession();
		Query consulta = session
				.createSQLQuery(
						"SELECT codTipoPlanilla AS id_tabla_tipo from planillatesoreria where codPlanillaPago='"+ planilla+ "'").setResultTransformer(
						Transformers.aliasToBean(TipoTO.class));
		return ((TipoTO) consulta.list().get(0)).getId_tabla_tipo();
		}

	 public List<PlanillaTO> obtenerPlanillasAprobacion(String usuario,String ano, String mes) throws Exception  {
			Session session = getHibernateTemplate().getSessionFactory()
					.openSession();
			Tipo tipo = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_estado_planilla", "01"));
		 
			Query consulta = session
					.createSQLQuery(
							"select CONVERT(varchar(3),pt.codProceso) as codProceso,convert(varchar(10),pt.codPlanillaPago) as codplanilla, t.descripcion_valor as descTipoPlanilla" +
							" ,convert(varchar(10),pt.fecha,103) as fecha, pt.monto_total as monto_total,pt.codtipoplanilla as tipoPlanilla, convert(varchar(100),glosa) AS glosa " +
			                "  from detalleaprobacionplanilla dap inner join planillatesoreria pt on dap.codplanilla=pt.codplanillapago" +
			                " inner join tipo t on t.id_tabla_tipo= pt.codtipoplanilla  where estadoPlanilla='"+tipo.getIdTablaTipo()+"'  and dap.id_usuario='"+usuario+"' " +
			                "and dap.estado=1 and dap.flagaprobacion=0  ").setResultTransformer(
							Transformers.aliasToBean(PlanillaTO.class));
			/*Query consulta = session
			.createSQLQuery(
					"select CONVERT(varchar(3),pt.codProceso) as codProceso, convert(varchar(10),pt.codPlanillaPago) as codplanilla, t.descripcion_valor as descTipoPlanilla" +
					" ,convert(varchar(10),pt.fecha,103) as fecha, pt.monto_total as monto_total,pt.codtipoplanilla as tipoPlanilla, convert(varchar(100),glosa) as glosa" +
	                "  from detalleaprobacionplanilla dap inner join planillatesoreria pt on dap.codplanilla=pt.codplanillapago" +
	                " inner join tipo t on t.id_tabla_tipo= pt.codtipoplanilla  where dap.id_usuario='"+usuario+"' " +
	                		"and pt.ano='"+ano+"' and pt.mes='"+mes+"'" ).setResultTransformer(
					Transformers.aliasToBean(PlanillaTO.class));*/
			return consulta.list();
		}
	 
	 public List<DetallePlanillaTO> obtenerDetallesPlanilla(String planilla) throws Exception  {
		    Session session = getHibernateTemplate().getSessionFactory()
			.openSession();
		    List<DetallePlanillaTO> detalle= new ArrayList<DetallePlanillaTO>();
			Tipo tipo1 = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_planillaTesoreria", "01"));
			Tipo tipo2 = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_planillaTesoreria", "02"));
			Tipo tipo3 = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_planillaTesoreria", "03"));
			Tipo tipo4 = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_planillaTesoreria", "04"));
			Tipo tipo5 = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_planillaTesoreria", "05"));
			Tipo tipogenerado = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_estado_planilla", "01"));
			Tipo tipoaceptado = Utiles_Convertir.convertirToTipo_TipoTO(this
					.getTipoCampoCodigo("tipo_estado_planilla", "02"));
			int tipoPlanilla=getTipoPlanilla(planilla);
			
			
			Query consulta=null;
	        if(tipo1.getIdTablaTipo()==tipoPlanilla){
	        	System.out.println("select codDetallePlanillaPago as codDetallePlanilla, convert(varchar(10),dp.codplanillapago) as codPlanilla, " +
						" t.descripcion_valor as receptor, convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto," +
						" convert(varchar(15),cp.serie_comprobante+'-'+cp.numero_comprobante) as numero, " +
		                " p.razon_social as proveedor, dp.id_tipo_retencion as idTipoRetencion, dp.factor_retencion as factor_retencion" +
		                ",dp.monto_inicial as monto_inicial,  convert(varchar(2),isnull(dp.id_banco,'')) as idbanco," +
		                " case when dp.id_banco is null or id_banco='' then '' " +
		                " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                " end as banco,  (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle," +
		                "(Select top 1 convert(varchar(15), nro_orden) from orden_comprobante oc where oc.id_comprobante=cp.id_comprobante ) as nroorden" +
		                " from detalleplanillatesoreria dp inner join tipo t on dp.tipoAgenteReceptor= " +
		                " t.id_tabla_tipo inner join comprobantepago cp on dp.nroComprobante=cp.id_comprobante  inner join proveedor p on " +
		                " [nit/ruc]=p.cod_proveedor where codPlanillaPago='"+planilla+"'");
	        	 consulta = session
				.createSQLQuery(
						"select codDetallePlanillaPago as codDetallePlanilla, convert(varchar(10),dp.codplanillapago) as codPlanilla, " +
						" t.descripcion_valor as receptor, convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto," +
						" convert(varchar(15),cp.serie_comprobante+'-'+cp.numero_comprobante) as numero, " +
		                " p.razon_social as proveedor, dp.id_tipo_retencion as idTipoRetencion, dp.factor_retencion as factor_retencion" +
		                ",dp.monto_inicial as monto_inicial,  convert(varchar(2),isnull(dp.id_banco,'')) as idbanco," +
		                " case when dp.id_banco is null or id_banco='' then '' " +
		                " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                " end as banco,  (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle," +
		                "(Select top 1 convert(varchar(15), nro_orden) from orden_comprobante oc where oc.id_comprobante=cp.id_comprobante ) as nroorden" +
		                " from detalleplanillatesoreria dp inner join tipo t on dp.tipoAgenteReceptor= " +
		                " t.id_tabla_tipo inner join comprobantepago cp on dp.nroComprobante=cp.id_comprobante  inner join proveedor p on " +
		                " [nit/ruc]=p.cod_proveedor where codPlanillaPago='"+planilla+"'").setResultTransformer(
						Transformers.aliasToBean(DetallePlanillaTO.class));
	             
	        }
	        if(tipo2.getIdTablaTipo()==tipoPlanilla){
	        	System.out.println("select codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla, t.descripcion_valor as receptor, " +
						"convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto,convert(varchar(10),dp.nroComprobante)  as numero," +
		                " p.razon_social as proveedor,dp.id_tipo_retencion as idTipoRetencion, dp.factor_retencion as factor_retencion," +
		                "dp.monto_inicial as monto_inicial, convert(varchar(2),isnull(dp.id_banco,'')) as idbanco," +
		                
		                " case when dp.id_banco is null  or id_banco='' then '' " +
		                " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                " end as banco, (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
		                " from detalleplanillatesoreria dp inner join tipo t on dp.tipoAgenteReceptor= " +
		                " t.id_tabla_tipo  inner join proveedor p on " +
		                " [nit/ruc]=p.cod_proveedor where codPlanillaPago='"+planilla+"'");
	        	 consulta = session
				.createSQLQuery(
						
						"select codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla, t.descripcion_valor as receptor, " +
						"convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto,convert(varchar(10),dp.nroComprobante)  as numero," +
		                " p.razon_social as proveedor,dp.id_tipo_retencion as idTipoRetencion, dp.factor_retencion as factor_retencion," +
		                "dp.monto_inicial as monto_inicial, convert(varchar(2),isnull(dp.id_banco,'')) as idbanco," +
		                
		                " case when dp.id_banco is null  or id_banco='' then '' " +
		                " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                " end as banco, (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
		                " from detalleplanillatesoreria dp inner join tipo t on dp.tipoAgenteReceptor= " +
		                " t.id_tabla_tipo  inner join proveedor p on " +
		                " [nit/ruc]=p.cod_proveedor where codPlanillaPago='"+planilla+"'").setResultTransformer(
						Transformers.aliasToBean(DetallePlanillaTO.class));
	             
	        }

	        if(tipo3.getIdTablaTipo()==tipoPlanilla){
	        	 consulta = session
				.createSQLQuery(
						"select codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla, convert(varchar(60),t.desc_tipo_trab) as receptor, " +
						" convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto, convert(varchar(15),dp.nroComprobante) as numero, " +
		                " p.ap_paterno+' '+p.ap_materno+' '+nombre as proveedor, dp.id_tipo_retencion as idTipoRetencion, dp.factor_retencion as factor_retencion," +
		                "dp.monto_inicial as monto_inicial,  convert(varchar(2),isnull(dp.id_banco,'')) as idbanco," +
		               
		                " case when dp.id_banco is null  or id_banco='' then '' " +
		                " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                " end as banco, (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
		                " from " +
		                " detalleplanillatesoreria dp inner join tipo_trabajador t on dp.tipo_trabaPlanilla=  " +
		                " t.id_tipo_trab  inner join persona p on " +
		                " [nit/ruc]=p.codigo_persona where codPlanillaPago='"+planilla+"'").setResultTransformer(
						Transformers.aliasToBean(DetallePlanillaTO.class));
	        
	        }
	        if(tipo4.getIdTablaTipo()==tipoPlanilla){
	        	 consulta = session
				.createSQLQuery(
						"select codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla, t.descripcion_valor as receptor," +
	                      "  convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto, convert(varchar(30),t3.descripcion_valor) as numero, " +
	                      " dp.nom_receptor as proveedor, dp.id_tipo_retencion as idTipoRetencion, " +
	                      " dp.factor_retencion as factor_retencion,dp.monto_inicial as monto_inicial, convert(varchar(2),isnull(dp.id_banco,'')) as idbanco,  " +
	                   
	                        " case when dp.id_banco is null  or id_banco='' then '' " +
	                        " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
	                        " end as banco,  (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
	                      " FROM detalleplanillatesoreria dp  " +
	                      " inner join tipo t on dp.tipoAgenteReceptor= t.id_tabla_tipo " +
	                      " inner join tipo t3 on t3.id_tabla_tipo=dp.tipoComprobanteOrigen where " +
	                      " codPlanillaPago='"+planilla+"' ").setResultTransformer(
						Transformers.aliasToBean(DetallePlanillaTO.class));
	           
	        }
	         if(tipo5.getIdTablaTipo()==tipoPlanilla){
	        	 System.out.println("select  dp.codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla, (Select descripcion_valor from tipo where id_tabla_tipo=dp.tipoAgenteReceptor) as receptor, " +
		                      "  convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto,case " +
		                      " when " +
		                      " (Select p2.codTipoPlanilla from planillatesoreria p2 where dp.tipo_trabaplanilla=p2.codplanillapago)" +
		                      " =(select id_tabla_tipo from tipo where tabla='tipo_planillaTesoreria' and codigo='01')" +
		                      " then (Select convert(varchar(12),rtrim(serie_comprobante)+'-'+numero_comprobante) from comprobantepago where id_comprobante=dp.nroComprobante)" +
		                      " when " +
		                      " (Select p2.codTipoPlanilla from planillatesoreria p2 where dp.tipo_trabaplanilla=p2.codplanillapago)" +
		                      " =(select id_tabla_tipo from tipo where tabla='tipo_planillaTesoreria' and codigo='02')" +
		                      " then convert(varchar(12),nroComprobante)" +
		                      " end as numero,p.razon_social as proveedor, dp.id_tipo_retencion as idTipoRetencion, " +
		                      " dp.factor_retencion as factor_retencion,dp.monto_inicial as monto_inicial,  convert(varchar(2),isnull(dp.id_banco,'')) as idbanco, " +
		                       
		                    " case when dp.id_banco is null  or id_banco='' then '' " +
		                    " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                    " end as banco,  (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
		                      " from detalleplanillatesoreria dp " +
		                      " inner join proveedor p on dp.[nit/ruc]=p.cod_proveedor inner join planillatesoreria " +
		                      " pt on pt.codPlanillaPago=dp.codPlanillaPago" +
		                      " where  dp.codPlanillaPago='"+planilla+"' ");
	        	  consulta = session
					.createSQLQuery(
							" select  dp.codDetallePlanillaPago as codDetallePlanilla,convert(varchar(10),dp.codplanillapago) as codPlanilla," +
							" (Select convert(varchar(100),descripcion_valor) from tipo where id_tabla_tipo=dp.tipoAgenteReceptor) as receptor, " +
		                      "  convert(varchar(11),[nit/ruc]) as ruc, dp.monto as monto,case " +
		                      " when " +
		                      " (Select p2.codTipoPlanilla from planillatesoreria p2 where dp.tipo_trabaplanilla=p2.codplanillapago)" +
		                      " =(select id_tabla_tipo from tipo where tabla='tipo_planillaTesoreria' and codigo='01')" +
		                      " then (Select convert(varchar(15),rtrim(serie_comprobante)+'-'+numero_comprobante) from comprobantepago where id_comprobante=dp.nroComprobante)" +
		                      " when " +
		                      " (Select p2.codTipoPlanilla from planillatesoreria p2 where dp.tipo_trabaplanilla=p2.codplanillapago)" +
		                      " =(select id_tabla_tipo from tipo where tabla='tipo_planillaTesoreria' and codigo='02')" +
		                      " then convert(varchar(12),nroComprobante)" +
		                      " end as numero,p.razon_social as proveedor, dp.id_tipo_retencion as idTipoRetencion, " +
		                      " dp.factor_retencion as factor_retencion,dp.monto_inicial as monto_inicial,  convert(varchar(2),isnull(dp.id_banco,'')) as idbanco, " +
		                       
		                    " case when dp.id_banco is null  or id_banco='' then '' " +
		                    " when dp.id_banco is not null  and id_banco<>'' then (select nom_banco from banco where id_banco=dp.id_banco) " +
		                    " end as banco,  (Select tip.descripcion_valor from tipo tip where dp.estadoDetalle=tip.id_tabla_tipo ) as desc_estado_detalle" +
		                      " from detalleplanillatesoreria dp " +
		                      " inner join proveedor p on dp.[nit/ruc]=p.cod_proveedor inner join planillatesoreria " +
		                      " pt on pt.codPlanillaPago=dp.codPlanillaPago" +
		                      " where  dp.codPlanillaPago='"+planilla+"' ").setResultTransformer(
							Transformers.aliasToBean(DetallePlanillaTO.class));	
	
	        }
	      
			
			return consulta.list();
		}
	 	public List<AnoTO> getAniosPlanillas() {
			Session session = getHibernateTemplate().getSessionFactory()
					.openSession();
			Query consulta = session
					.createSQLQuery(
							"select distinct convert(varchar(4),ano) AS ano from planillatesoreria order by 1 ")
					.setResultTransformer(Transformers.aliasToBean(AnoTO.class));
			return consulta.list();
		}

		public List<AnoTO> getMesesPlanillas() {
			Session session = getHibernateTemplate().getSessionFactory()
					.openSession();
			Query consulta = session
					.createSQLQuery(
							"select distinct convert(varchar(4),ano) AS ano,convert(varchar(2),mes) as mes  from planillatesoreria order by 2 ")
					.setResultTransformer(Transformers.aliasToBean(AnoTO.class));
			return consulta.list();
		}
		public String aprobarPlanilla(String usuario,List<PlanillaTO> planillas) throws Exception
	    {
			String operacion;
			Session session = getHibernateTemplate().getSessionFactory().openSession();
			Transaction tx = session.beginTransaction();
	        
	        tx.begin();
	        try {
	           for(PlanillaTO pla:planillas){
	        	   System.out.println("aa"+pla.getAprobada());
	        	   System.out.println("rr"+pla.getRechazada());
	               if(pla.getAprobada()!=null && pla.getAprobada()){
	                   
	                   DetalleAprobacionPlanillaPK pk= new DetalleAprobacionPlanillaPK();
	                   pk.setCodPlanilla(pla.getCodplanilla());
	                   pk.setCodProceso(pla.getCodProceso());
	                   pk.setIdUsuario(usuario);
	                   pk.setCoddetalle(0);
	                   DetalleAprobacionPlanilla detalle= getHibernateTemplate().get(DetalleAprobacionPlanilla.class, pk);
	                   detalle.setFechaOperacion(new Date());
	                   detalle.setFlagAprobacion(1);
	                   session.merge(detalle);

	               }
	               else{
	            	   if(pla.getRechazada()!=null && pla.getRechazada()){
		                   PlanillaTesoreria p= getHibernateTemplate().get(PlanillaTesoreria.class, pla.getCodplanilla());
		                   DetalleAprobacionPlanillaPK pk= new DetalleAprobacionPlanillaPK();
		                   p.setObservacion(pla.getObservacion());
		                   pk.setCodPlanilla(pla.getCodplanilla());
		                   pk.setCodProceso(pla.getCodProceso());
		                   pk.setIdUsuario(usuario);
		                   pk.setCoddetalle(0);
		                   DetalleAprobacionPlanilla detalle= getHibernateTemplate().get(DetalleAprobacionPlanilla.class, pk);
		                   detalle.setFechaOperacion(new Date());
		                   detalle.setFlagAprobacion(2);
		                   session.merge(detalle);
		                   
		               }
	               }
	               

	           }

	           tx.commit();
	           operacion=planillas.get(0).getCodplanilla();
	        }
	        catch (Exception e) {
	          e.printStackTrace();
	          tx.rollback();
	          throw e;
	           
	        }
	        return operacion;
	    }
		public String registrarPagoCaja(String usuario,PagoCajaTO registro) throws Exception {
			String retorno = "";
			Session session = getHibernateTemplate().getSessionFactory()
					.openSession();
			Transaction tx = session.beginTransaction();

			tx.begin();
			try {

				PagoCajaPK ppk = new PagoCajaPK();
				Tipo t= (Tipo)session.get(Tipo.class,registro.getCmb_tipo());
				ppk.setIdLocalidadRecibo(registro.getId_localidad());
				ppk.setIdZonaRecibo(registro.getId_zona());
				ppk.setNroInscripcion(registro.getNro_inscripcion());
				ppk.setNumero(registro.getNumero());
				ppk.setSerie(registro.getSerie());
				
				PagoCaja p = new PagoCaja();
				Utiles_Fecha fecha = new Utiles_Fecha(registro.getFecha_pedido());
				p.setIdLocalidadCajero(registro.getIdlocalidadcajero());
				p.setIdTipoPago(t);
				p.setIdZonaCajero(registro.getIdzonacajero());
				p.setImporte(registro.getImporte());
				p.setPagoCajaPK(ppk);
				p.setFechaPago(fecha.getDate());
				p.setUsuario(usuario);
				session.persist(p);

				tx.commit();
				retorno = p.getPagoCajaPK().getNroInscripcion();
			} catch (Exception e) {
				tx.rollback();
				throw e;
			}
			return retorno;
		}
		 public List<PagoCajaTO> consultarPagosCaja(String fecha,String id_zona, String id_localidad) throws Exception  {
				Session session = getHibernateTemplate().getSessionFactory()
						.openSession();		 
				Query consulta = session
						.createSQLQuery(
								" select convert(varchar(10),nro_inscripcion) as nro_inscripcion, convert(varchar(10),serie) as serie," +
								" convert(varchar(10),numero) as numero, importe as importe,  " +
								" (select nom_zona from zona where id_zona=id_zona_recibo) as zona_recibo, " +
								" (select nom_localidad from localidad where id_localidad=id_localidad_recibo) as localidad_recibo, " +
								" convert(varchar(10), fecha_pago, 103) as fecha_pedido, " +
								" (select descripcion_valor from tipo where id_Tabla_tipo=id_tipo_pago) as tipo_pago," +
								" convert(varchar(8),usuario) as usuario,convert(varchar(2),id_zona_cajero) as idzonacajero, convert(varchar(2),id_localidad_cajero) as idlocalidadcajero," +
								" convert(varchar(2),id_zona_recibo) as id_zona, convert(varchar(2),id_localidad_recibo) as id_localidad" +
								" from pago_caja where fecha_pago =cast('"+fecha+"' as datetime) and id_zona_cajero='"+id_zona+"' and id_localidad_cajero='"+id_localidad+"'" +
										"and id_tipo_pago<>352").setResultTransformer(
								Transformers.aliasToBean(PagoCajaTO.class));	
				System.out.println(
						" select convert(varchar(10),nro_inscripcion) as nro_inscripcion, convert(varchar(10),serie) as serie," +
						" convert(varchar(10),numero) as numero, importe as importe,  " +
						" (select nom_zona from zona where id_zona=id_zona_recibo) as zona_recibo, " +
						" (select nom_localidad from localidad where id_localidad=id_localidad_recibo) as localidad_recibo, " +
						" convert(varchar(10), fecha_pago, 103) as fecha_pedido, " +
						" (select descripcion_valor from tipo where id_Tabla_tipo=id_tipo_pago) as tipo_pago," +
						" convert(varchar(8),usuario) as usuario,convert(varchar(2),id_zona_cajero) as idzonacajero, convert(varchar(2),id_localidad_cajero) as idlocalidadcajero," +
						" convert(varchar(2),id_zona_recibo) as id_zona, convert(varchar(2),id_localidad_recibo) as id_localidad" +
						" from pago_caja where fecha_pago =cast('"+fecha+"' as datetime) and id_zona_cajero='"+id_zona+"' and id_localidad_cajero='"+id_localidad+"'" +
								" and id_tipo_pago<>352");
				return consulta.list();
			}
		 public Boolean eliminar_pagocaja(PagoCajaTO registro) throws Exception {
			 System.out.println("entro");
			 System.out.println("--"+registro.getNro_inscripcion());
			    Boolean retorno =false;
				Session session = getHibernateTemplate().getSessionFactory()
						.openSession();
				Transaction tx = session.beginTransaction();

				tx.begin();
				try {

					PagoCajaPK ppk = new PagoCajaPK();
					ppk.setNroInscripcion(registro.getNro_inscripcion());
					ppk.setNumero(registro.getNumero());
					ppk.setSerie(registro.getSerie());
					ppk.setIdLocalidadRecibo(registro.getId_localidad());
					ppk.setIdZonaRecibo(registro.getId_zona());
					
					PagoCaja p= (PagoCaja)session.get(PagoCaja.class,ppk);
					System.out.println("insc"+p.getPagoCajaPK().getNroInscripcion());
					session.delete(p);
					

					tx.commit();
					retorno = true;
				} catch (Exception e) {
					tx.rollback();
					throw e;
				
				}
				return retorno;
			}
		 public String registrarCliente(ClienteTO registro) throws Exception {
				String retorno = "";
				Session session = getHibernateTemplate().getSessionFactory()
						.openSession();
				Transaction tx = session.beginTransaction();

				tx.begin();
				try {

					ClientesComercialPK ppk = new ClientesComercialPK();
					ppk.setId_localidad(registro.getId_localidad());
					ppk.setId_zona(registro.getId_zona());
					ppk.setNro_inscripcion(registro.getNroinscripcion());
					ClientesComercial cli = new ClientesComercial();
					cli.setClientesComercialPK(ppk);
					cli.setNombre(registro.getNombreCliente());
					session.persist(cli);

					tx.commit();
					retorno = ppk.getNro_inscripcion();
				} catch (Exception e) {
					tx.rollback();
					throw e;
				}
				return retorno;
			}
		
	

}
